-
Notifications
You must be signed in to change notification settings - Fork 19
Fix #28 Added footer component #31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Fix #28 Added footer component #31
Conversation
modified: components/footer.tsx modified: output/build-manifest.json modified: output/server/middleware-build-manifest.js modified: output/server/pages-manifest.json modified: output/static/development/_buildManifest.js
📝 WalkthroughWalkthroughThe PR reworks the Footer component into a full, responsive layout featuring branding, descriptive text, and organized navigation sections. Build manifests are simultaneously updated to support error page configuration and development file references. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
components/footer.tsx (1)
58-66: Hardcoded fill color breaks dark mode.The Telegram icon uses
fill="#000"which will be invisible against the dark background in dark mode. The footer's parent link hastext-gray-400which sets the current color.🔎 Proposed fix
<path fillRule="evenodd" clipRule="evenodd" d="M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12ZM12.3583 9.38244C11.3857 9.787 9.44177 10.6243 6.52657 11.8944C6.05318 12.0827 5.8052 12.2669 5.78263 12.4469C5.74448 12.7513 6.12559 12.8711 6.64455 13.0343C6.71515 13.0565 6.78829 13.0795 6.86327 13.1038C7.37385 13.2698 8.06068 13.464 8.41773 13.4717C8.74161 13.4787 9.1031 13.3452 9.50219 13.0711C12.226 11.2325 13.632 10.3032 13.7202 10.2831C13.7825 10.269 13.8688 10.2512 13.9273 10.3032C13.9858 10.3552 13.98 10.4536 13.9738 10.48C13.9361 10.641 12.4401 12.0318 11.6659 12.7515C11.4246 12.9759 11.2534 13.135 11.2184 13.1714C11.14 13.2528 11.0601 13.3298 10.9833 13.4038C10.509 13.8611 10.1532 14.204 11.003 14.764C11.4114 15.0331 11.7381 15.2556 12.0641 15.4776C12.4201 15.7201 12.7752 15.9619 13.2347 16.2631C13.3517 16.3398 13.4635 16.4195 13.5724 16.4971C13.9867 16.7925 14.3589 17.0579 14.8188 17.0155C15.086 16.991 15.362 16.7397 15.5022 15.9903C15.8335 14.2193 16.4847 10.382 16.6352 8.80081C16.6484 8.66228 16.6318 8.48498 16.6185 8.40715C16.6051 8.32932 16.5773 8.21842 16.4761 8.13633C16.3563 8.03911 16.1714 8.01861 16.0886 8.02C15.7125 8.0267 15.1354 8.22735 12.3583 9.38244Z" - fill="#000" + fill="currentColor" ></path>{" "}The same issue exists for Discord (line 88) and YouTube (lines 100-101) icons.
♻️ Duplicate comments (3)
output/server/pages-manifest.json (1)
1-5: Build artifact - same concern as noted for middleware-build-manifest.js.This is a build output file that should be excluded from version control.
output/build-manifest.json (1)
1-30: Build artifact - same concern as noted for middleware-build-manifest.js.This is a build output file that should be excluded from version control.
output/static/development/_buildManifest.js (1)
1-1: Build artifact - same concern as noted for middleware-build-manifest.js.This is a development build output file that should be excluded from version control.
🧹 Nitpick comments (1)
components/footer.tsx (1)
8-8: Consider typing icon props instead ofany.The icon functions use
props: anywhich bypasses type checking. A simple improvement would be to useReact.SVGProps<SVGSVGElement>.🔎 Example
import { SVGProps } from "react" // Then for each icon: icon: (props: SVGProps<SVGSVGElement>) => ( <svg fill="currentColor" viewBox="0 0 24 24" {...props}> ... </svg> )
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
components/footer.tsxoutput/build-manifest.jsonoutput/server/middleware-build-manifest.jsoutput/server/pages-manifest.jsonoutput/static/development/_buildManifest.js
| <Image | ||
| unoptimized | ||
| src="./logo.png" | ||
| alt="Stability Nexus Logo" | ||
| width={40} | ||
| height={40} | ||
| className="h-10 w-auto" | ||
| /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Image source path may not resolve correctly.
The relative path ./logo.png may not work as expected with Next.js Image component. For static assets, use an absolute path from the public directory.
🔎 Proposed fix
<Image
unoptimized
- src="./logo.png"
+ src="/logo.png"
alt="Stability Nexus Logo"
width={40}
height={40}
className="h-10 w-auto"
/>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <Image | |
| unoptimized | |
| src="./logo.png" | |
| alt="Stability Nexus Logo" | |
| width={40} | |
| height={40} | |
| className="h-10 w-auto" | |
| /> | |
| <Image | |
| unoptimized | |
| src="/logo.png" | |
| alt="Stability Nexus Logo" | |
| width={40} | |
| height={40} | |
| className="h-10 w-auto" | |
| /> |
🤖 Prompt for AI Agents
In components/footer.tsx around lines 126 to 133, the Image src uses a relative
path "./logo.png" which may not resolve with Next.js Image; change the src to an
absolute path from the public directory (e.g. "/logo.png") or import the image
as a module and pass the imported value to Image, and ensure the logo file is
placed in the project's public folder if using the absolute path.
| <Link | ||
| key={item.name} | ||
| href={item.href} | ||
| className="text-gray-400 hover:text-gray-500" | ||
| > | ||
| <span className="sr-only">{item.name}</span> | ||
| <item.icon className="size-6" aria-hidden="true" /> | ||
| </Link> | ||
| ))} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
External links should open in new tabs with security attributes.
Social media links point to external sites but lack target="_blank" and rel="noopener noreferrer". Users typically expect external links to open in new tabs, and the rel attribute prevents potential security issues.
🔎 Proposed fix
{navigation.map((item) => (
<Link
key={item.name}
href={item.href}
+ target="_blank"
+ rel="noopener noreferrer"
className="text-gray-400 hover:text-gray-500"
>
<span className="sr-only">{item.name}</span>
<item.icon className="size-6" aria-hidden="true" />
</Link>
))}Consider the same change for the external footerLinks (Workshop, Hackathon, Articles, Docs) at lines 163-168 and 180-185.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <Link | |
| key={item.name} | |
| href={item.href} | |
| className="text-gray-400 hover:text-gray-500" | |
| > | |
| <span className="sr-only">{item.name}</span> | |
| <item.icon className="size-6" aria-hidden="true" /> | |
| </Link> | |
| ))} | |
| <Link | |
| key={item.name} | |
| href={item.href} | |
| target="_blank" | |
| rel="noopener noreferrer" | |
| className="text-gray-400 hover:text-gray-500" | |
| > | |
| <span className="sr-only">{item.name}</span> | |
| <item.icon className="size-6" aria-hidden="true" /> | |
| </Link> | |
| ))} |
🤖 Prompt for AI Agents
In components/footer.tsx around lines 143-151 (and also update footer link
usages at 163-168 and 180-185), the social and external footer links are missing
target and rel attributes; update each external Link to include target="_blank"
and rel="noopener noreferrer" so they open in a new tab and avoid window.opener
security issues, and ensure the attributes are applied to the rendered anchor
(for Next.js Link, pass target and rel through Link or add them to the inner <a>
depending on your Link usage).
| @@ -1 +1 @@ | |||
| self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":[],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":["static/chunks/webpack.js","static/chunks/main-app.js"],"pages":{"/_app":[]},"ampFirstPages":[]} No newline at end of file | |||
| self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":["static/chunks/react-refresh.js"],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":["static/chunks/webpack.js","static/chunks/main-app.js"],"pages":{"/_app":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_app.js"],"/_error":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_error.js"]},"ampFirstPages":[]} No newline at end of file | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Build artifacts should not be committed.
This file appears to be a Next.js build output. Build artifacts in the output/ directory should typically be excluded via .gitignore rather than committed to source control. Committing build outputs causes PR noise, potential merge conflicts, and repository bloat.
Please verify that output/ is in your .gitignore and remove these files from the commit:
#!/bin/bash
# Check if output/ is in .gitignore
grep -E "^output/?$|^\.next/?$" .gitignore || echo "output/ not found in .gitignore"
# List all output files in this PR
fd . output/ --type f 2>/dev/null | head -20🤖 Prompt for AI Agents
In output/server/middleware-build-manifest.js around line 1, a Next.js build
artifact has been committed; remove build outputs from the repository by adding
output/ (and .next/ if applicable) to .gitignore, then remove the committed
artifact from the git index (so it remains locally but is not tracked), and
update the PR by committing the .gitignore change and a follow-up commit that
removes the tracked output files (or amend/rebase to drop them) so the build
artifact is no longer part of the commit history.
Replaced footer component to look modern. Fixes #28
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.